//package com.ruoyi.web.restApi;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.ruoyi.common.core.controller.BaseController;
//import com.ruoyi.common.core.domain.AjaxResult;
//import com.ruoyi.common.utils.Threads;
//import com.ruoyi.common.utils.http.HttpUtils;
//import com.ruoyi.web.domain.DeviceStatusEntity;
//import com.ruoyi.web.domain.EndProcessEntity;
//import com.ruoyi.web.domain.StartProcessEntity;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.Map;
//
///**
// * 自动加工设备RestController
// *
// * @author Gua
// * @version 1.0
// * @date 2022-02-21
// */
//@RestController
//@RequestMapping("/device")
//public class DeviceController extends BaseController {
//    /**
//     * 接受上位机发来的设备状态数据
//     *
//     * @param entity 数据实体
//     * @return json
//     */
//    //@RequiresPermissions("actionControl:action:list")
//    @PostMapping("/status")
//    public Map<String, Object> deviceStatus(@RequestBody DeviceStatusEntity entity) {
//        if (entity.isFull())
//        {
//            logger.info(entity.toString());
//            Threads.service(3);
//            return AjaxResult.success();
//        }
//        else
//        {
//            return AjaxResult.error("数据缺失");
//        }
//    }
//
//    @Value("${custom.device.url}")
//    private String url;
//
//    /**
//     * 启动设备加工
//     *
//     * @param entity 数据实体
//     * @return json
//     */
//    @PostMapping("/process/start")
//    public Boolean startProcess(@RequestBody StartProcessEntity entity) {
//        //{
//        //    "BatchNo":"1-1",
//        //        "ProductionNo":"A1",
//        //        "AreaNo":"A1_Drill",
//        //}
//        String res = HttpUtils.sendPost(url, entity.toJson());
//        try
//        {
//            JSONObject json = JSON.parseObject(res);
//            if (json.containsKey("Status"))
//            {
//                String status = json.getString("Status");
//                if (status.equals("OK"))
//                {
//                    logger.info(String.format("返回数据：%s", res));
//                    return true;
//                }
//            }
//            logger.info(String.format("返回数据有误：%s", res));
//        } catch (Exception e)
//        {
//            logger.error("接受数据转换为json时发生错误", e);
//        }
//        return false;
//    }
//
//    /**
//     * 接受上位机发来的加工完成信号
//     *
//     * @param entity 数据实体
//     * @return json
//     */
//    @PostMapping("/process/end")
//    public Map<String, Object> endProcess(@RequestBody EndProcessEntity entity) {
//        if (entity.isFull())
//        {
//            logger.info(entity.toString());
//            Threads.service(3);
//            return AjaxResult.success();
//        }
//        else
//        {
//            return AjaxResult.error("数据缺失");
//        }
//    }
//
//
//    /**
//     * 模拟发送设备状态数据
//     *
//     * @return
//     */
//    @PostMapping("/status/test")
//    public Boolean deviceStatusTest() {
//        //"Device":"DRILL",
//        //        "BatchNo":"1-1",
//        //        "ProductionNo":"A1",
//        //        "ProgramName":"A1_Drill",
//        //        "ProcessNo":"1",
//        //        "DeviceStatus":"Processing",
//        String res = HttpUtils.sendPost("http://localhost:80/device/status", DeviceStatusEntity.example().toJson());
//        try
//        {
//            JSONObject json = JSON.parseObject(res);
//            if (json.containsKey("code"))
//            {
//                String code = json.getString("code");
//                if (code.equals("0"))
//                {
//                    logger.info(String.format("返回数据：%s", res));
//                    return true;
//                }
//            }
//            logger.info(String.format("返回数据有误：%s", res));
//        } catch (Exception e)
//        {
//            logger.error("接受数据转换为json时发生错误", e);
//        }
//        return false;
//    }
//
//    /**
//     * 模拟接受启动加工数据
//     * <p>sendPost(String url, String param)中参数是以String格式传输的，要用@RequestParam接收</p>
//     *
//     * @return
//     */
//    @PostMapping("/process/start/test")
//    public Map<String, Object> startProcessTest(@RequestBody StartProcessEntity entity) {
//        JSONObject jsonObject = entity.toJson();
//        jsonObject.put("Status", "OK");
//        return jsonObject;
//    }
//
//    /**
//     * 模拟发送加工结束数据
//     *
//     * @return
//     */
//    @GetMapping("/process/end/test")
//    public Boolean endProcessTest() {
//        //{
//        //    "Device":"DRILL",
//        //        "ProcessStatus":"Done",
//        //}
//        String res = HttpUtils.sendPost("http://localhost:80/device/process/end", EndProcessEntity.example().toJson());
//        try
//        {
//            JSONObject json = JSON.parseObject(res);
//            if (json.containsKey("code"))
//            {
//                String code = json.getString("code");
//                if (code.equals("0"))
//                {
//                    logger.info(String.format("返回数据：%s", res));
//                    return true;
//                }
//            }
//            logger.info(String.format("返回数据有误：%s", res));
//        } catch (Exception e)
//        {
//            logger.error("接受数据转换为json时发生错误", e);
//        }
//        return false;
//    }
//
//}